#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <signal.h>

void sigcb(int signum)
{
    printf("recv a signal:%d\n", signum);
}
int main()
{
    signal(SIGINT, sigcb);
    signal(40, sigcb);

    //阻塞所有信号
    sigset_t set, old;
    sigemptyset(&set);  //清空集合 
    sigemptyset(&old);

    //sigaddset(sigset_t *set, int signum); 将指定信号添加到set集合中
    sigfillset(&set); //将所有的信号都添加到set集合中
    sigprocmask(SIG_BLOCK, &set, &old);  //sigprocmask()更改调用进程的信号掩码,这里是将set中的所有信号都阻塞
    
    printf("pleas enter to continue\n");
    getchar(); //再按下回车之前, 程序卡在这里

    sigprocmask(SIG_UNBLOCK, &set, NULL); // 解除阻塞
    return 0;
}
